﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Collections;
using transferObjects.tasacionAsesoria.tasacion;

/// <summary>
/// Descripción breve de TasacionDB
/// </summary>
/// 


//hola conejo
namespace dao.sqlServer2005.tasacionAsesoria.tasacion
{

    public class TasacionDB
    {
        SqlCommand insertTasacion;
        SqlCommand updateTasacion;
        SqlCommand selectTodasTasaciones;

        /// <summary>
        /// Constructor que tiene la consultas para la base de datos
        /// </summary>
        /// <param name="connection"></param>
        public TasacionDB(SqlConnection connection)
        {
            try
            {
                String query = "";

                query = " INSERT INTO Tasacion " +
                        " (objetivoTasacion,tasador,fechaTasacion,rutCliente,rutPropietario,ejecutivo,sucursal,tipoBien,uso,region,ciudad,comuna,agrupacion,rolSii,valorUf,plano,añoPlano,numeroPlano,direccionPropiedad,pisoPropiedad,avaluo,numeroTasacionAnterior,tasadorAnterior,fechaTasacionAnterior,descripcionPropiedad,diseñoDG,calidadDG,conservacionDG,edificacionDG,usoACS,edificacionACS,edificacionSinRegularizarACS,Dfl2ACS,usoAPR,edificacionAPR,factiblesAPR,copropiedadAPR,expropiacion,usufructo) " +
                        " VALUES (@objetivoTasacion,@tasador,@fechaTasacion,@rutCliente,@rutPropietario,@ejecutivo,@sucursal,@tipoBien,@uso,@region,@ciudad,@comuna,@agrupacion,@rolSii,@valorUf,@plano,@añoPlano,@numeroPlano,@direccionPropiedad,@pisoPropiedad,@avaluo,@numeroTasacionAnterior,@tasadorAnterior,@fechaTasacionAnterior,@descripcionPropiedad,@diseñoDG,@calidadDG,@conservacionDG,@edificacionDG,@usoACS,@edificacionACS,@edificacionSinRegularizarACS,@Dfl2ACS,@usoAPR,@edificacionAPR,@factiblesAPR,@copropiedadAPR,@expropiacion,@usufructo)";
                insertTasacion = new SqlCommand(query, connection);

                
                query = " UPDATE Tasacion " +
                        " SET objetivoTasacion=@objetivoTasacion,tasador=@tasador,fechaTasacion=@fechaTasacion,rutCliente=@rutCliente,rutPropietario=@rutPropietario,ejecutivo=@ejecutivo,sucursal=@sucursal,tipoBien=@tipoBien,uso=@uso,region=@region,ciudad=@ciudad,comuna=@comuna,agrupacion=@agrupacion,rolSii=@rolSii,valorUf=@valorUf,plano=@plano,añoPlano=@añoPlano,numeroPlano=@numeroPlano,direccionPropiedad=@direccionPropiedad,pisoPropiedad=@pisoPropiedad,avaluo=@avaluo,numeroTasacionAnterior=@numeroTasacionAnterior,tasadorAnterior=@tasadorAnterior,fechaTasacionAnterior=@fechaTasacionAnterior,descripcionPropiedad=@descripcionPropiedad,diseñoDG=@diseñoDG,calidadDG=@calidadDG,conservacionDG=@conservacionDG,edificacionDG=@edificacionDG,usoACS=@usoACS,edificacionACS=@edificacionACS,edificacionSinRegularizarACS=@edificacionSinRegularizarACS,Dfl2ACS=@Dfl2ACS,usoAPR=@usoAPR,edificacionAPR=@edificacionAPR,factiblesAPR=@factiblesAPR,copropiedadAPR=@copropiedadAPR,expropiacion=@expropiacion,usufructo=@usufructo " +
                        " WHERE idTasacion=@idTasacion ";
                updateTasacion = new SqlCommand(query, connection);

                query = "SELECT * " +
                        "FROM Tasacion ";
                selectTodasTasaciones = new SqlCommand(query, connection);
                
            }
            catch (Exception e)
            {
            }
        }

        public int guardarTasacion(Tasacion tasacion)
        {
            try
            {
                insertTasacion.Parameters.Add(new SqlParameter("objetivoTasacion", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("tasador", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("fechaTasacion", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("rutCliente", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("rutPropietario", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("ejecutivo", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("sucursal", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("tipoBien", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("uso", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("region", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("ciudad", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("comuna", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("agrupacion", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("rolSii", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("valorUf", SqlDbType.Money));
                insertTasacion.Parameters.Add(new SqlParameter("plano", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("añoPlano", SqlDbType.Int));
                insertTasacion.Parameters.Add(new SqlParameter("numeroPlano", SqlDbType.Int));
                insertTasacion.Parameters.Add(new SqlParameter("direccionPropiedad", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("pisoPropiedad", SqlDbType.Int));
                insertTasacion.Parameters.Add(new SqlParameter("avaluo", SqlDbType.Money));
                insertTasacion.Parameters.Add(new SqlParameter("numeroTasacionAnterior", SqlDbType.Int));
                insertTasacion.Parameters.Add(new SqlParameter("tasadorAnterior", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("fechaTasacionAnterior", SqlDbType.VarChar));

                //Descripción General de la Propiedad y del Sector donde se encuentra
                insertTasacion.Parameters.Add(new SqlParameter("descripcionPropiedad", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("diseñoDG", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("calidadDG", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("conservacionDG", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("edificacionDG", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("usoACS", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("edificacionACS", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("edificacionSinRegularizarACS", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("Dfl2ACS", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("usoAPR", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("edificacionAPR", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("factiblesAPR", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("copropiedadAPR", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("expropiacion", SqlDbType.VarChar));
                insertTasacion.Parameters.Add(new SqlParameter("usufructo", SqlDbType.VarChar));
              //  insertTasacion.Parameters.Add(new SqlParameter("camposDescripcionPropiedad", SqlDbType.VarChar));


                insertTasacion.Parameters[0].Value = tasacion.ObjetivoTasacion;
                insertTasacion.Parameters[1].Value = tasacion.Tasador;
                insertTasacion.Parameters[2].Value = tasacion.FechaTasacion;
                insertTasacion.Parameters[3].Value = tasacion.RutCliente;
                insertTasacion.Parameters[4].Value = tasacion.RutPropietario;
                insertTasacion.Parameters[5].Value = tasacion.Ejecutivo;
                insertTasacion.Parameters[6].Value = tasacion.Sucursal;
                insertTasacion.Parameters[7].Value = tasacion.TipoBien;
                insertTasacion.Parameters[8].Value = tasacion.Uso;
                insertTasacion.Parameters[9].Value = tasacion.Region;
                insertTasacion.Parameters[10].Value = tasacion.Ciudad;
                insertTasacion.Parameters[11].Value = tasacion.Comuna;
                insertTasacion.Parameters[12].Value = tasacion.Agrupacion;
                insertTasacion.Parameters[13].Value = tasacion.RolSii;
                insertTasacion.Parameters[14].Value = tasacion.ValorUf;
                insertTasacion.Parameters[15].Value = tasacion.Plano;
                insertTasacion.Parameters[16].Value = tasacion.AñoPlano;
                insertTasacion.Parameters[17].Value = tasacion.NumeroPlano;
                insertTasacion.Parameters[18].Value = tasacion.DireccionPropiedad;
                insertTasacion.Parameters[19].Value = tasacion.PisoPropiedad;
                insertTasacion.Parameters[20].Value = tasacion.Avaluo;
                insertTasacion.Parameters[21].Value = tasacion.NumeroTasacionAnterior;
                insertTasacion.Parameters[22].Value = tasacion.TasadorAnterior;
                insertTasacion.Parameters[23].Value = tasacion.FechaTasacionAnterior;

                //Descripción General de la Propiedad y del Sector donde se encuentra
                insertTasacion.Parameters[24].Value = tasacion.DescripcionPropiedad;
                insertTasacion.Parameters[25].Value = tasacion.DiseñoDG;
                insertTasacion.Parameters[26].Value = tasacion.CalidadDG;
                insertTasacion.Parameters[27].Value = tasacion.ConservacionDG;
                insertTasacion.Parameters[28].Value = tasacion.EdificacionDG;
                insertTasacion.Parameters[29].Value = tasacion.UsoACS;
                insertTasacion.Parameters[30].Value = tasacion.EdificacionACS;
                insertTasacion.Parameters[31].Value = tasacion.EdificacionSinRegularizarACS;
                insertTasacion.Parameters[32].Value = tasacion.Dfl2ACS;
                insertTasacion.Parameters[33].Value = tasacion.UsoAPR;
                insertTasacion.Parameters[34].Value = tasacion.EdificacionAPR;
                insertTasacion.Parameters[35].Value = tasacion.FactiblesAPR;
                insertTasacion.Parameters[36].Value = tasacion.CopropiedadAPR;
                insertTasacion.Parameters[37].Value = tasacion.Expropiacion;
                insertTasacion.Parameters[38].Value = tasacion.Usufructo;


                int res = insertTasacion.ExecuteNonQuery();

                return res;
            }
            catch (Exception e)
            {
                throw new Exception("Error en dao.sqlServer2005.TasacionDB metodo guardarTasacion \n\n" + e.Message);
            }

        }

        public int editarTasacion(Tasacion tasacion)
        {
            try
            {
                updateTasacion.Parameters.Add(new SqlParameter("objetivoTasacion", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("tasador", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("fechaTasacion", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("rutCliente", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("rutPropietario", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("ejecutivo", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("sucursal", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("tipoBien", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("uso", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("region", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("ciudad", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("comuna", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("agrupacion", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("rolSii", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("valorUf", SqlDbType.Money));
                updateTasacion.Parameters.Add(new SqlParameter("plano", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("añoPlano", SqlDbType.Int));
                updateTasacion.Parameters.Add(new SqlParameter("numeroPlano", SqlDbType.Int));
                updateTasacion.Parameters.Add(new SqlParameter("direccionPropiedad", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("pisoPropiedad", SqlDbType.Int));
                updateTasacion.Parameters.Add(new SqlParameter("avaluo", SqlDbType.Money));
                updateTasacion.Parameters.Add(new SqlParameter("numeroTasacionAnterior", SqlDbType.Int));
                updateTasacion.Parameters.Add(new SqlParameter("tasadorAnterior", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("fechaTasacionAnterior", SqlDbType.VarChar));
                //Descripción General de la Propiedad y del Sector donde se encuentra
                updateTasacion.Parameters.Add(new SqlParameter("descripcionPropiedad", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("diseñoDG", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("calidadDG", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("conservacionDG", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("edificacionDG", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("usoACS", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("edificacionACS", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("edificacionSinRegularizarACS", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("Dfl2ACS", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("usoAPR", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("edificacionAPR", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("factiblesAPR", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("copropiedadAPR", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("expropiacion", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("usufructo", SqlDbType.VarChar));
                updateTasacion.Parameters.Add(new SqlParameter("idTasacion", SqlDbType.Int));


                updateTasacion.Parameters[0].Value = tasacion.ObjetivoTasacion;
                updateTasacion.Parameters[1].Value = tasacion.Tasador;
                updateTasacion.Parameters[2].Value = tasacion.FechaTasacion;
                updateTasacion.Parameters[3].Value = tasacion.RutCliente;
                updateTasacion.Parameters[4].Value = tasacion.RutPropietario;
                updateTasacion.Parameters[5].Value = tasacion.Ejecutivo;
                updateTasacion.Parameters[6].Value = tasacion.Sucursal;
                updateTasacion.Parameters[7].Value = tasacion.TipoBien;
                updateTasacion.Parameters[8].Value = tasacion.Uso;
                updateTasacion.Parameters[9].Value = tasacion.Region;
                updateTasacion.Parameters[10].Value = tasacion.Ciudad;
                updateTasacion.Parameters[11].Value = tasacion.Comuna;
                updateTasacion.Parameters[12].Value = tasacion.Agrupacion;
                updateTasacion.Parameters[13].Value = tasacion.RolSii;
                updateTasacion.Parameters[14].Value = tasacion.ValorUf;
                updateTasacion.Parameters[15].Value = tasacion.Plano;
                updateTasacion.Parameters[16].Value = tasacion.AñoPlano;
                updateTasacion.Parameters[17].Value = tasacion.NumeroPlano;
                updateTasacion.Parameters[18].Value = tasacion.DireccionPropiedad;
                updateTasacion.Parameters[19].Value = tasacion.PisoPropiedad;
                updateTasacion.Parameters[20].Value = tasacion.Avaluo;
                updateTasacion.Parameters[21].Value = tasacion.NumeroTasacionAnterior;
                updateTasacion.Parameters[22].Value = tasacion.TasadorAnterior;
                updateTasacion.Parameters[23].Value = tasacion.FechaTasacionAnterior;

                //Descripción General de la Propiedad y del Sector donde se encuentra
                updateTasacion.Parameters[24].Value = tasacion.DescripcionPropiedad;
                updateTasacion.Parameters[25].Value = tasacion.DiseñoDG;
                updateTasacion.Parameters[26].Value = tasacion.CalidadDG;
                updateTasacion.Parameters[27].Value = tasacion.ConservacionDG;
                updateTasacion.Parameters[28].Value = tasacion.EdificacionDG;
                updateTasacion.Parameters[29].Value = tasacion.UsoACS;
                updateTasacion.Parameters[30].Value = tasacion.EdificacionACS;
                updateTasacion.Parameters[31].Value = tasacion.EdificacionSinRegularizarACS;
                updateTasacion.Parameters[32].Value = tasacion.Dfl2ACS;
                updateTasacion.Parameters[33].Value = tasacion.UsoAPR;
                updateTasacion.Parameters[34].Value = tasacion.EdificacionAPR;
                updateTasacion.Parameters[35].Value = tasacion.FactiblesAPR;
                updateTasacion.Parameters[36].Value = tasacion.CopropiedadAPR;
                updateTasacion.Parameters[37].Value = tasacion.Expropiacion;
                updateTasacion.Parameters[38].Value = tasacion.Usufructo;
                updateTasacion.Parameters[39].Value = tasacion.IdTasacion;

                int res = updateTasacion.ExecuteNonQuery();

                return res;
            }
            catch (Exception e)
            {
                throw new Exception("Error en dao.sqlServer2005.TasascionDB metodo editarTasacion \n\n" + e.Message);
            }

        }

            
        public List<Tasacion> obtenerTodasTasaciones()
        {
            try
            {
                List<Tasacion> tasaciones = new List<Tasacion>();
                SqlDataReader reader = selectTodasTasaciones.ExecuteReader();
                Tasacion tasacion;
                while (reader.Read())
                {
                    tasacion = new Tasacion();
                    tasacion.IdTasacion = reader.GetInt32(0);
                    tasacion.ObjetivoTasacion = reader.GetString(1);
                    tasacion.Tasador = reader.GetString(2);
                    tasacion.FechaTasacion = reader.GetString(3);
                    tasacion.RutCliente = reader.GetString(4);
                    tasacion.RutPropietario = reader.GetString(5);
                    tasacion.Ejecutivo = reader.GetString(6);
                    tasacion.Sucursal = reader.GetString(7);
                    tasacion.TipoBien = reader.GetString(8);
                    tasacion.Uso = reader.GetString(9);
                    tasacion.DireccionPropiedad = reader.GetString(10);
                    tasacion.PisoPropiedad = reader.GetInt32(11);
                    tasacion.Region = reader.GetString(12);
                    tasacion.Ciudad = reader.GetString(13);
                    tasacion.Comuna = reader.GetString(14);
                    tasacion.Agrupacion = reader.GetString(15);
                    tasacion.RolSii = reader.GetString(16);
                    tasacion.Avaluo = reader.GetFloat(17);
                    tasacion.ValorUf= reader.GetFloat(18);
                    tasacion.Plano = reader.GetString(19);
                    tasacion.AñoPlano = reader.GetInt32(20);
                    tasacion.NumeroPlano = reader.GetInt32(21);
                    tasacion.NumeroTasacionAnterior = reader.GetInt32(22);
                    tasacion.TasadorAnterior = reader.GetString(23);
                    tasacion.FechaTasacionAnterior = reader.GetString(24);
                    
                    //Descripción General de la Propiedad y del Sector donde se encuentra
                 //   tasacion.CamposDescripcionPropiedad = "";
                    tasacion.DescripcionPropiedad = reader.GetString(25);
                    tasacion.DiseñoDG = reader.GetString(26);
                    tasacion.CalidadDG = reader.GetString(27);
                    tasacion.ConservacionDG = reader.GetString(28);
                    tasacion.EdificacionDG = reader.GetString(29);
                    tasacion.UsoACS = reader.GetString(30);
                    tasacion.EdificacionACS = reader.GetString(31);
                    tasacion.EdificacionSinRegularizarACS = reader.GetString(32);
                    tasacion.Dfl2ACS = reader.GetString(33);
                    tasacion.UsoAPR = reader.GetString(34);
                    tasacion.EdificacionAPR = reader.GetString(35);
                    tasacion.FactiblesAPR = reader.GetString(36);
                    tasacion.CopropiedadAPR = reader.GetString(37);             
                    tasacion.Expropiacion = reader.GetString(38);
                    tasacion.Usufructo = reader.GetString(39);
                                
                    tasaciones.Add(tasacion);
                }
                return tasaciones;
            }
            catch (Exception e)
            {
                throw new Exception("Error en dao.sqlServer2005.TasacionDB, método obtenerTodasTasaciones \n\nDetalle error:" + e.Message);
            }

        }
    }
}